package com.xinjian.jianba.service;

import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.xinjian.jianba.dto.pay.ApplePayDto;
import com.xinjian.jianba.dto.pay.BuyGiftDto;
import com.xinjian.jianba.dto.pay.BuyMeetcoinDto;
import com.xinjian.jianba.dto.pay.GiftVo;
import com.xinjian.jianba.dto.pay.OrderIsPayDto;
import com.xinjian.jianba.dto.pay.PayResultVo;
import com.xinjian.jianba.dto.pay.ProductVo;
import com.xinjian.jianba.dto.pay.SendGiftDto;
import com.xinjian.jianba.dto.pay.SetPayPasswordDto;
import com.xinjian.jianba.dto.pay.UserAccountDetailDto;
import com.xinjian.jianba.dto.pay.UserAccountDetailVo;
import com.xinjian.jianba.dto.pay.UserAccountInfoVo;
import com.xinjian.jianba.dto.pay.UserGiftDetailDto;
import com.xinjian.jianba.dto.pay.UserGiftVo;
import com.xinjian.jianba.exception.Page;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

public interface PayService {

    UserAccountInfoVo userAccountInfo(Long userId);

    void setPassword(SetPayPasswordDto dto) throws Exception;

    void updatePassword(SetPayPasswordDto dto) throws Exception;

    Page<UserGiftVo> userGiftList(UserGiftDetailDto userGiftDetailDto);

    Page<UserAccountDetailVo> userAccountDetail(UserAccountDetailDto userAccountDetailDto);

    SendGiftDto sendGift(BuyGiftDto buyGiftDto) throws Exception;

    PayResultVo buyMeetcoin(BuyMeetcoinDto buyMeetcoinDto) throws Exception;

    List<ProductVo> allProduct(Integer sourceType);

    List<GiftVo> allGift();

    String notifyPay(String payWayCode, HttpServletRequest httpServletRequest) throws Exception;

    JSONObject applePay(ApplePayDto applePayDto);

    Object orderIsPay(OrderIsPayDto orderIsPayDto) throws AlipayApiException;

    void updateOrder(String orderNo) throws Exception;

}
